package com.cwt_taxi_xa.record;

import android.content.Context;

import com.cwt_taxi_xa.constants.SPConstants;
import com.cwt_taxi_xa.model.RecorderInfo;
import com.cwt_taxi_xa.service.SerialPortService;
import com.cwt_taxi_xa.util.AppLog;
import com.cwt_taxi_xa.util.ExceptionUtil;
import com.cwt_taxi_xa.util.SPUtils;

import java.util.ArrayList;

/**
 * 录音数据本地保存
 * @author wlh
 */
public class RecorderBiz {

	private RecorderDao dao;

	public RecorderBiz(Context context){
		this.dao = new RecorderDao(context);
	}

	/**
	 * 添加一条数据
	 * @param info	数据
	 * @return
	 */
	public long addInfo(RecorderInfo info){
		return dao.save(info);
	}

	/**
	 * 查找数据总量
	 * @return int
	 */
	public int getCount(){
		return dao.getCount();
	}

	/**
	 * 查找一条交易数据
	 */
	public RecorderInfo getInfoByMediaId(String mediaId){
		return dao.findInfoByMediaId(mediaId);
	}

	/**
	 * 查找录音数据
	 */
	public ArrayList<RecorderInfo> findInfos(int reason, String sTime, String eTime){
		return dao.findInfos(reason, sTime, eTime);
	}

	/**
	 * 查找录音数据
	 */
	public ArrayList<RecorderInfo> findInfos(){
		return dao.findInfos();
	}

	/**
	 * 清空表数据
	 * @return result != -1：成功
	 */
	public long clearInfos(){
		return dao.clearTable();
	}

	/**
	 * 删除一条指定数据
	 * @return result != -1：成功
	 */
	public int deleteInfo(RecorderInfo info){
		return dao.deleteInfo(info);
	}

	/**
	 * 删除溢出的数据
	 */
	public void deletefullInfos(){
		dao.deletefullInfos();
	}

	/**
	 * 跟新最后一条数据的结束录音时间
	 * @return result != -1：成功
	 */
	public int updateLastEndTime(){
		return dao.updateLastEndTime();
	}

	/**
	 * 将当前录音更新为投诉录音
	 */
	public int updateReason(int reason){
		return dao.updateReason(reason);
	}

	/**
	 * 将当前录音更新为投诉录音
	 */
	public int updateReason(ArrayList<String> mediaIdList){
		return dao.updateReason(mediaIdList);
	}

	/**
	 * ISU录音模式（0X01：全程录音；0X02：翻牌录音）
	 * @return
	 */
	public static int getRecordType() {
		int recordType = SPUtils.defaultPref().getInt(SPConstants.PARAMS_RECORD_MODE, 2);
		return recordType;
	}

	/**
	 * 录音模式
	 * @param recordType	0X01：全程录音；0X02：翻牌录音
	 */
	public static void setRecordType(int recordType) {
		int oldType = getRecordType();

		if(recordType != 1 && recordType != 2){
			recordType = 1;
		}
		SPUtils.defaultEditor().putInt(SPConstants.PARAMS_RECORD_MODE, recordType).commit();

		try {
			if(oldType  == 2 && recordType == 1){
				SerialPortService.handler.obtainMessage(1005).sendToTarget();
			}
			if(oldType  == 1 && recordType == 2){
				SerialPortService.handler.obtainMessage(1006).sendToTarget();
			}
		} catch (Exception e) {
			AppLog.e(ExceptionUtil.getInfo(e), e);
			e.printStackTrace();
		}
	}

	/**
	 * ISU录音文件最大时长，1～255，单位为分钟（min）
	 * @return
	 */
	public static int getMaxTime() {
		int maxTime = SPUtils.defaultPref().getInt(SPConstants.PARAMS_MAX_RECORD_TIME, 2);
		return maxTime;
	}

	public static void setMaxTime(int maxTime) {
		SPUtils.defaultEditor().putInt(SPConstants.PARAMS_MAX_RECORD_TIME, maxTime).commit();
	}
}
